builder: Don't leak refs
authorMatthias Clasen <mclasen@redhat.com>
Mon, 27 Sep 2021 20:38:32 +0000 (16:38 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 27 Sep 2021 20:38:32 +0000 (16:38 -0400)
We sometimes end up setting an object on a GValue
that we are then not interested in. We need to
unset it, or we'll leak the ref.

gtk/gtkbuilder.c

index 809f55ff6316d11c2087c2ff6b9e29e3ab00c402..6f13bde4c7c450ac1b82a2ffff865597325187d5 100644 (file)
@@ -606,16 +606,12 @@ gtk_builder_get_parameters (GtkBuilder         *builder,
           continue;
         }
 
-      if (prop->pspec->flags & filter_flags)
-        {
-          if (filtered_parameters)
-            object_properties_add (filtered_parameters, property_name, &property_value);
-        }
+      if ((prop->pspec->flags & filter_flags) != 0 && filtered_parameters)
+        object_properties_add (filtered_parameters, property_name, &property_value);
+      else if ((prop->pspec->flags & filter_flags) == 0 && parameters)
+        object_properties_add (parameters, property_name, &property_value);
       else
-        {
-          if (parameters)
-            object_properties_add (parameters, property_name, &property_value);
-        }
+        g_value_unset (&property_value);
     }
 }